package com.fjwt.gz.core.third.bo;

import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.Version;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;

/**
 * 卡券奖品表对象 t_c_coupon_award
 *
 * @date 2023-12-19
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CouponAwardBo {

    /**
     * 卡券id
     */
    private Long couponId;

    /**
     * 卡券名称
     */
    private String couponName;

    /**
     * 活动预算，单位分
     */
    private Integer couponAmount;

    /**
     * 卡券数量
     */
    private Integer couponNum;

    /**
     * 卡券领取数量
     */
    private Integer couponGet;

    /**
     * 活动类型：1 支付宝满减活动 2 支付宝随机减活动 3微信满减活动 4微信随机减活动
     */
    private Integer couponType;

    /**
     * 配置审核完成之后微信、支付宝或者银联的回参
     */
    private String apiJson;

    /**
     * 活动开始时间
     */
    @JSONField(name = "sTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date sTime;

    /**
     * 活动结束时间
     */
    @JSONField(name = "eTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date eTime;

    /**
     * 状态 0草稿 1配置中  2配置完成
     */
    private Integer state;

    /**
     * 创建者id
     */
    private Long createdUid;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;

    /**
     * 更新建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updatedAt;

    /**
     * 机构ID
     */
    private String agentNo;

    /**
     * 代理商号1
     */
    private String agentNo1;

    /**
     * 代理商号2
     */
    private String agentNo2;

    /**
     * 代理商号3
     */
    private String agentNo3;

    /**
     * 代理商号4
     */
    private String agentNo4;

    /**
     * 批次号
     */
    private String batchNo;

    /**卡券核销规则**/
    private String remark;

    /**
     * 是否已配置活动 （true 已配置活动，false未配置活动，null 所有）
     */
    @TableField(exist = false)
    private Boolean isConfigActivity;

    /**
     * 是否已过期 （true 已过期，false未过期，null 所有）
     */
    @TableField(exist = false)
    private Boolean isOverTime;

    /**
     * 乐观锁
     */
    @Version
    private Integer version;

    /** 出资方，为空时平台出资 **/
    private String payConfig;

    /**
     * 卡券面值
     */
    private Integer couponPrice;

    /**是否需要激活（0否 1是，默认0）**/
    private Integer isNeedActivate;

    /**激活说明**/
    private String activateExplain;

    /**核销后奖励积分**/
    private Integer verifiedScore;

    /**积分自领取后多少天过期**/
    private Integer overDays;

    /**是否限制可派发机构（0否，1是；默认0）**/
    private Integer isAllocation;

    /**激活方式（1实名认证  2客户经理；可多选，以逗号分割）**/
    private String activateType;

    /**
     * 积分过期规则类型：0 n天后过期，1 指定时间过期  2次季度首月月底失效
     */
    private Integer overType;
    /**
     * 过期时间
     */
    private Date  overTime;

    /**
     * 领取后可用天数
     */
    private Integer availableDays;

    /**
     * 机构号集合
     */
    @TableField(exist = false)
    private List<String> agentNoList;

    /**
     * 起付金额（满多少元使用）
     */
    private Integer payAmount;

    /**
     * 周期性中奖次数限制(0不限制， 1限每日，2限每周，3限每月)
     */
    private Integer periodType;

    /**
     * 周期性限制中奖次数（period_type != 0时有效）
     */
    private Integer periodTimes;

    /**
     * 当前周期中奖次数限制类型(类型：当前年第多少天、第多少周、第多少月)
     */
    private Integer currentPeriodType;

    /**
     * 当前周期内中奖次数
     */
    private Integer currentPeriodTimes;

    /**
     * 活动编号
     */
    @TableField(exist = false)
    private String activityNo;

    /**
     * 指定下级活动机构ID
     */
    @TableField(exist = false)
    private String  nextAgentNo;

    /**
     * 是否限制派发客户（0否 1实名客户  2资产等级客户）
     */
    private Integer isLimitUser;

    /**
     * 限制派发客户内容（资产等级客户：0~5，可多选，以逗号分隔）
     */
    private String limitUserContent;

    /**
     * 是否开启回执（0否 1是）
     */
    private Integer isOpenReceipt;

    /**
     * 回执类型（0 基础信息 1 手机银行 2 快捷支付 3 开卡 4 提额）
     */
    private String receiptType;

    /**
     * 回执内容（0姓名 1手机号  2身份证号  3银行卡号 4银行卡照片，可多选，以逗号分隔）
     */
    private String receiptContent;
    /**
     * 是否限制可派发人员（0否，1是；默认0）
     */
    private Integer isAllocationUser;
    /**
     * 是否限卡支付：0不限制卡支付 1限制邮储借记卡支付(储蓄卡) 2 限制邮政贷记卡（信用卡）
     */
    private Integer isRestrictBank;
    /**
     * 活动期间每个用户可领取最大数量
     */
    private Integer everyoneMaxNum;
    /**
     * 立减活动随机减，减价开始区间
     */
    private Integer priceStart;
    /**
     * 立减活动随机减，减价结束区间
     */
    private Integer priceEnd;
    /**
     * 活动期间单天预算发放上限
     */
    private Integer everydayMaxNum;
    /**
     * 对账文件oss记录ID
     */
    private Integer billOssRecordId;
    /**
     * 对账失败信息
     */
    private String billErrorMsg;

    /** 支付通道 **/
    private String ifCode;

    /** 认证地址 **/
    private String authConfig;

    /**
     * 有每日或每月限量的卡券剩余张数
     */
    @TableField(exist = false)
    private Integer  numberSheets;
    /**
     * 卡券所属活动Id
     */
    @TableField(exist = false)
    private Integer  activityId;
    /**
     * 类型
     */
    @TableField(exist = false)
    private Integer  awardType;
}
